/*!
    \copyright  Copyright (c) 2024 Qualcomm Technologies International, Ltd.
                All Rights Reserved.
                Qualcomm Technologies International, Ltd. Confidential and Proprietary.
    \file
    @{
        \ingroup    adkfs
        \brief      Defines the types used in the adkfs component

*/
#ifndef ADKFS_TYPES_H
#define ADKFS_TYPES_H

typedef struct adkfs_fhandle_tag_t* adkfs_fhandle_t;

typedef enum adkfs_access_flags_t {
    /** Opens for reading, file position is at the beginning.
     * If the file does not exist, the call fails.
     */
    ADKFS_FOPEN_READ = (0x00000001),
    /** Opens an empty file for writing. If the given file exists, its contents are destroyed,
     * file position is at the beginning.
     */
    ADKFS_FOPEN_WRITE = (0x00000002),
    /** Opens an empty file for both reading and writing. If the file exists,
     * its contents are destroyed, file position is at the beginning.
     */
    ADKFS_FOPEN_READ_WRITE = (ADKFS_FOPEN_READ|ADKFS_FOPEN_WRITE),
    /** Open for appending (writing at end of file). File must exist
     */
    ADKFS_FOPEN_APPEND = (0x00000004),
    /** Opens for writing at the end of the file(appending). Creates the file if it does not exist.
     */
    ADKFS_FOPEN_WRITE_APPEND = (ADKFS_FOPEN_WRITE|ADKFS_FOPEN_APPEND),
    /** Opens for both reading and writing. The file must exist, file position is at the beginning of file.
     */
    ADKFS_FOPEN_READ_WRITE_EXISTING = (0x00000008),
} adkfs_access_flags_t;

#endif /* ADKFS_TYPES_H */
